// Trim() , Ltrim() , RTrim()
String.prototype.Trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.LTrim = function() {
    return this.replace(/(^\s*)/g, "");
}

String.prototype.RTrim = function() {
    return this.replace(/(\s*$)/g, "");
}

String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {   
    if (!RegExp.prototype.isPrototypeOf(reallyDo)) {   
        return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);   
    } else {   
        return this.replace(reallyDo, replaceWith);   
    }   
}

//屏蔽右键
/*
 * <body oncontextmenu="return false"
 onselectstart="return false"
 ondragstart="return false"
 onbeforecopy="return false"
 onmouseup=document.selection.empty()
 oncopy=document.selection.empty()
 onselect=document.selection.empty()></body> 

   onselectstart="return false" 禁止选择，ondragstart="return false"禁止拖放，oncopy=document.selection.empty() 禁止拷贝。
 */
function CloseRightKey()
{
	window.event.returnValue=false;
}

//判断是否为数字
function chkNum(objtext)
{
	if (objtext.value.length>0)
	{
		if (isNaN(objtext.value))
		{
			alert("请输入正确的数字！");
			objtext.focus();
			objtext.select();
		}
	}
}

//弹出窗口方式打开页面
function OpenWin(url, para) {
    if (para != "") {
        url = url + para;
    }

    var newwin = window.open(url, "", "scrollbars");
    newwin.moveTo(0, 0);
    
    newwin.resizeTo(window.screen.availWidth, window.screen.availHeight);
}

/*
	判断是否脱机状态
*/			
if( window.navigator.onLine == false )
{
	alert("对不起，您的浏览器正处于[脱机工作]的状态，为保持正常工作请去掉[脱机工作]！");
}

//给字符串对象加了一个判断该是不是日期格式的方法
String.prototype.isDate = function()   
{   
	var r = this.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);     
	if( r == null )return false;   
	var d = new Date(r[1], r[3]-1, r[4]);     
	return(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);   
} 

//判断是否为空
function checkNull(obj) {
	if (obj.value.Trim().length == 0) {
		obj.value = "";
		return true;
	}
	return false;
}

//判断整数类型(默认参数2为false)
function checkInt(obj, plus) {
	var reg;
	if (plus) {
		reg = /^(\+)?(\d)+$/;
	} else {
		reg = /^(\+|-)?(\d)+$/;
	}
	return reg.test(obj.value);
}

//判断小数类型(默认参数2为false)
function checkFloat(obj, plus) {
	var reg;
	if (plus) {
		reg = /^(\+)?\d+(\.\d+)?$/;
	} else {
		reg = /^(\+|-)?\d+(\.\d+)?$/;
	}
	return reg.test(obj.value);
}

//判断传入的字符串是否式时间类型（例如：8：00）
function chceckDateTime(value)
{
    var reg;
	reg = /^(((0?[0-9])|(1?[0-9])|(2?[0-3]))\:([0-5]?[0-9]))?$/;
	return reg.test(value);
}

//判断电子邮件格式
function checkEMail(obj) {
	var reg =  /^([A-Za-z0-9])(\w)+@(\w)+(\.)(com|com\.cn|net|cn|net\.cn|org|biz|info|gov|gov\.cn|edu|edu\.cn)/;
	return reg.test(obj.value);
}

//判断邮政编码格式
function checkPostalcode(obj) {
	var reg =   /^[1-9]\d{5}$/ ;
	return reg.test(obj.value);
}

//判断网址格式
function checkUrl(obj)
{
	//var reUrl = ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$";
	var reUrl = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
	return reUrl.test(obj.value)
}

//判断电话格式
function checkTelePhone(obj) {
	var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{6,8}$/;
	return reg.test(obj.value);
}

//判断移动电话格式
function checkMobile(obj) {
	var reg = /^\d{11}$/;
	return reg.test(obj.value);
}

function checkPersonalID( obj ){
	var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/;
	return reg.test(obj.value);
}

function checkUserID(obj) {
	var reg = /^\w+$/;
	return reg.test(obj.value);
}

function getSelectText(obj) {
	var s = "";
	for (var i = 0; i < obj.length; i++) {
		if (obj.options[i].value == obj.value) {
			s = obj.options[i].text;
			break;
		}
	}
	return s;
}

function checkDataTime(obj)
{
	return obj.value.isDate();
}

//判断日期类型(年－月)
function checkShortDataTime(obj)
{
	var reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[123456789]|1[012])))$/;
	return reg.test(obj.value);
}

//判断日期类型(年)
function checkYear(obj)
{
	var reg = /^((((1[6-9]|[2-9]\d)\d{2})))$/;
	return reg.test(obj.value);
}

function checkLongDatetime(value)
{
    var reg;
	//reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/; 
	var reg = /^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])(([ap]m)?|(\:([0-5]?[0-9])))))?$/;
	return reg.test(value);
}

function checklongTime(value)
{
	var reg;
	reg = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d$/;
	return reg.test(value);
}

//得到当前系统时间，系统日期+时间
function getDateTime()
{
	var d,s,t;
	d=new Date();
	s=d.getFullYear().toString(10)+"-";
	t=d.getMonth()+1;
	s+=(t>9?"":"0")+t+"-";
	t=d.getDate();
	s+=(t>9?"":"0")+t+" ";
	t=d.getHours();
	s+=(t>9?"":"0")+t+":";
	t=d.getMinutes();
	s+=(t>9?"":"0")+t;
	//t=d.getSeconds();
	//s+=(t>9?"":"0")+t;
	return s;
}

//增加时间的小时单位	
function AddHours( n )
{
	var d,s,t;
	d=new Date();
	d.setHours( d.getHours() + parseInt( n ) );
	
	s=d.getFullYear().toString(10)+"-";
	t=d.getMonth()+1;
	s+=(t>9?"":"0")+t+"-";
	t=d.getDate();
	s+=(t>9?"":"0")+t+" ";
	t=d.getHours();
	s+=(t>9?"":"0")+t+":";
	t=d.getMinutes();
	s+=(t>9?"":"0")+t;
	//t=d.getSeconds();
	//s+=(t>9?"":"0")+t;
	return s;
}

//-------------------检查不超过（或等于）n位的数字----------------------------//
function ChkDigit(obj,n,flag) {		//flag=true 等于;flag=false 不超过.
	var num=obj.value;
	if(num=="") return true;
	for(var i=0;i<num.length;i++){
		if(isDigit(num.charAt(i))==false){
			alert("请在识别号中输入数字！");
			return false;
		}
	}
	if(flag) {
		if(num.length != n) {
			alert("请在识别号中输入"+n+"位数字！");
			return false;
		}
	} else {
		if(num.length > n) {
			alert("请在识别号中输入不超过"+n+"位的数字！");
			return false;
		}
	}
	return true;
}

//-----------------------------------------------------------------------------//
function isDigit(theNum){
	var theMask="0123456789";
	if(theNum==""){
		return true;
	}
	else if(theMask.indexOf(theNum)==-1){
		return false;
	}
	return true;
}

//		检测日期格式'YYYY-MM-DD',并比较,参数(Osdate)为开始日期，参数(Oedate)为终止日期。
//		用例：onblur="ChkCoDate(thisform.gsbeg,this)"
//----------------------检测日期格式,并比较----yyyy-mm-dd----------------------//
function ChkCoDate(Osdate,Oedate) {
  
  if(checkDateInput(Osdate)) {
    if(checkDateInput(Oedate)) {
      if(Osdate.value == "" || Oedate.value == "") return true;
  
      if(CompareDate(Osdate.value,Oedate.value)>=0) {
        return true;
      } else {
        //alert("日期关系不正确!\n比如:终止日期应该大于或等于开始日期!");
        return false;
      }
    } else {
      Oedate.focus();
      Oedate.select();
      return false;
    }
  } else {
    Osdate.focus();
    Osdate.select();
    return false;
  }
  
}

//检验控件是否为日期
function checkDateInput( ymd ) {
	
	ymdString = ymd.value ;
	if( ymdString == "" )
		return true;
	pos = ymdString.indexOf( "-" ) ;
	if( pos != 4 )  {
		alert( "日期的格式必须为 YYYY-M-D , 请重新输入 ！" ) ;	
		ymd.select() ;
		ymd.focus() ;
		return false;
	}
	_yearValue = ymdString.substring( 0 , pos ) ; 
	ymdString = ymdString.substring( pos + 1 , ymdString.length ) ; 
	pos = ymdString.indexOf( "-" ) ;
	if( pos != 1 && pos != 2 )  {
		alert( "日期的格式必须为 YYYY-M-D , 请重新输入 ！" ) ;	
		_checkTabButton(ymd);
		ymd.select() ;
		ymd.focus() ;
		return false;
	}
	_monthValue = ymdString.substring( 0 , pos ) ; 
	_dayValue = ymdString.substring( pos + 1 , ymdString.length ) ; 
	if( _dayValue.length != 1 && _dayValue.length != 2 )  {
		alert( "日期的格式必须为 YYYY-M-D , 请重新输入 ！" ) ;	
		_checkTabButton(ymd);
		ymd.select() ;
		ymd.focus() ;
		return false;
	}
	yearValue = parseInt( _yearValue ) ;

	//去掉前面的0
	while(true){
		if(_monthValue.indexOf("0")==0)
			_monthValue= _monthValue.substring(1,_monthValue.length);
		else
			break;
	}
	while(true){
		if(_dayValue.indexOf("0")==0)
			_dayValue= _dayValue.substring(1,_dayValue.length);
		else
			break;
	}
	monthValue = parseInt( _monthValue ) ;
	dayValue = parseInt( _dayValue ) ;
	
	if( isNaN( yearValue ) || isNaN( monthValue ) || isNaN( dayValue ) )  {
		//alert( "您输入的日期不合法！" ) ;
		ymd.select() ;
		ymd.focus() ;
		return false;
	}

	
	yearValue -= 1900 ;
	monthValue -= 1 ;
	NewDate = new Date( yearValue , monthValue , dayValue ) ;
	if( yearValue != NewDate.getYear() || monthValue != NewDate.getMonth() || dayValue != NewDate.getDate() )  {
		//alert( "您输入的日期不合法！" ) ;
		ymd.select() ;
		ymd.focus() ;
		return false;
	}
  
  return true;
}

function _dt_CheckDate(isNotNull, dateStr, onlyCheck) {
    var standStr
    var newDateObj
    var strErr, idxMonth, idxDay
    var year, month, day

    strErr1 = "标准的日期格式如：2002-02-21  2002-2-21  20020221"
    if (dateStr.length == 0) {
        if (isNotNull) {
            if (onlyCheck != true) {
                alert("错误：日期不能为空，请输入标准格式的日期\r\n\r\n" + strErr1)
            }
            return false
        } else {
            return true
        }
    }
    standStr = dateStr.replace("-", "/")
    if (dateStr.indexOf("-", 0) != 2 && dateStr.indexOf("-", 0) != 4) {
        if (onlyCheck != true) {
            alert("错误：日期输入不规范！\r\n\r\n" + strErr1)
        }
        return false
    }
    idxMonth = dateStr.indexOf("-", 0) + 1
    idxDay = dateStr.indexOf("-", idxMonth) + 1

    year = dateStr.substring(0, idxMonth - 1)
    month = dateStr.substring(idxMonth, idxDay - 1)
    if (month < 1 || month > 12) {
        if (onlyCheck != true) {
            alert("错误：输入的月份无效\r\n")
        }
        return false
    }
    if (dateStr.indexOf(" ", idxDay) != -1)
        day = dateStr.substring(idxDay, dateStr.indexOf(" ", idxDay))
    else
        day = dateStr.substring(idxDay)
    newDateObj = new Date(standStr)
    if (newDateObj == "NaN") {
        if (onlyCheck != true) {
            alert("错误：日期输入不规范！中间可能有空格或者字符\r\n\r\n" + strErr1)
        }
        return false;
    }
    if (day != newDateObj.getDate()) {
        if (onlyCheck != true) {
            alert("错误：日期不是正常公历日期！\r\n\r\n     公元" + parseInt(year) + "年" + parseInt(month) + "月没有" + day + "号！")
        }
        return false;
    }    
    return true;
}

//检查日期控件中的输入格式
function _dt_check(isNotNull, dateobj) {
    if (!_dt_CheckDate(isNotNull, formatDateStr(dateobj), false)) {
        dateobj.focus();
        return false;
    }
    return true;

}

//定义格式。允许用户输入三种格式：2002-12-03 and 2002-12-3 and 20021203，格式化为：2002-12-03
//																2002-02-03		 2002-2-2	     20020203
function formatDateStr(dateObj) {
    var dateStr = dateObj.value;
    var pos = dateStr.indexOf("-");
    var year = "";
    if (pos == -1 && dateStr.length == 8) {
        dateStr = dateStr.substring(0, 4) + "-" + dateStr.substring(4, 6) + "-" + dateStr.substring(6);
    } else if (pos == 4) {
        year = dateStr.substring(0, 4);
        var surpStr = dateStr.substring(pos + 1); //其余字段	
        pos = surpStr.indexOf("-");
        if (pos == 1) {
            if (surpStr.length == 3) {
                dateStr = year + "-0" + surpStr.substring(0, 1) + "-0" + surpStr.substring(2);
            } else if (surpStr.length == 4) {
                dateStr = year + "-0" + surpStr.substring(0, 1) + "-" + surpStr.substring(2);
            }
        } else if (pos == 2) {
            if (surpStr.length == 4) {
                dateStr = year + "-" + surpStr.substring(0, 2) + "-0" + surpStr.substring(3);
            }
        }
    }
    
    if (dateObj.value != dateStr) {
        dateObj.value = dateStr;
    }
    return dateStr;
}

function UrlEnCode( str ){
	return encodeURIComponent( str );
}

var getElementsByClassName = function (searchClass, node,tag) {  

    if(document.getElementsByClassName){  

        return  document.getElementsByClassName(searchClass)  

    }else{  

        node = node || document;  

        tag = tag || "*";  

        var classes = searchClass.split(" "),  

        elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),  

        patterns = [],  

        returnElements = [],  

        current,  

        match;  

        var i = classes.length;  

        while(--i >= 0){  

            patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));  

        }  

        var j = elements.length;  

        while(--j >= 0){  

            current = elements[j];  

            match = false;  

            for(var k=0, kl=patterns.length; k<kl; k++){  

                match = patterns[k].test(current.className);  

                if (!match)  break;  

            }  

            if (match)  returnElements.push(current);   

        }  

        return returnElements;  

    }  

} 

/*
	把进制放大，10 进制换成 62 进制，重复的机率将大大减小
	虽然只是短短的八位，但理论上，218340105584896 次里才会出现一次碰撞，
	如果把位数再升高，升到 10 位，就 839299365868340224 次才会出现一次碰撞，所以，可以放心使用
	alert(randomWord(8));
 */
function randomWord(n){
    var baseStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    for (var i = 0, r =""; i < n; i++) r += baseStr.charAt(Math.floor(Math.random() * 62));
    return r;
}

/*让控件的长度随输入字符的长度变化 */
function ReSize(o)
{
	if(o.value.length > 0)
	{
		var  range  =  o.createTextRange(); 
		 o.style.width = range.boundingWidth;
	}
}